Various types of computing environments share resources across multiple hosts or other systems. For example, virtualized systems and virtualized environments often support the sharing and load balancing of resources across multiple hosts or other systems. In this example, a single host can support multiple virtual machines that share common hardware components, storage systems, and the like. These virtual machines may also be referred to as “guest operating systems” as each host is capable of supporting multiple instances of one or more operating systems.
When sharing a data storage system across multiple hosts or multiple virtual machines, the computing environment must properly manage a high volume of data input/output (I/O) operations. The volume of I/O operations is commonly measured in IOPS (I/O Operations Per Second). FIG. 1 illustrates an example of an existing virtualized environment 100 including multiple hosts 102, 104, and 106, and a data storage system 108. In a particular implementation, hosts 102-106 are servers or other computing devices capable of performing a variety of processing and computing functions. Each host 102-106 includes multiple virtual machines 110 operating simultaneously.
During their normal operation, virtual machines 110 initiate data I/O requests, such as data read requests and data write requests, associated with data storage system 108. Data storage system 108 includes multiple data storage drives 112 and/or other data storage mechanisms. The storage resources associated with data storage system 108 are shared among the multiple hosts 102-106 and the virtual machines 110 included in those hosts. Each host 102-106 includes a virtualization kernel 114 (also referred to as a “hypervisor”) that manages the virtual machines 110 as well as shared resources, such as data storage system 108.
As the number of virtual machines associated with a particular host increases, there is a corresponding increase in demand for shared resources, such as memory and I/O resources. An increase in I/O resource utilization includes an increased number of data I/O operations that cause a corresponding increase in data communicated between a host and a data storage system. In existing virtualized systems, the increased demand for shared resources such as I/O bandwidth often degrades the performance or application throughput of latency sensitive workload operations within a virtualized system. In these situations, one or more of the virtual machines experiences increased latency or decreased throughput, which may decrease the performance of the virtual machines. Thus, it is desirable to provide a computing environment that improves the handling of data I/O operations associated with multiple hosts or other systems.
It is also desired to provide approaches that leverage existing virtual machine system applications that depend on offsite resources, but still optimizes memory and I/O resources. According to embodiments of the invention, some of these approaches require a local system to cooperate with existing virtual system operating systems to appear to be operating as expected and without any different, circumventing or disruptive operations. As will be seen, the invention provides such approaches, each in an elegant manner.